﻿using System;
using System.Data;
using System.Data.OleDb;

namespace DBConnect
{
    public class CommandModConf
    {
        #region Prestador

        public static DataTable selecionaPrestadores()
        {
            string query = "SELECT Profissional.ID AS Profissional, Clin_Hosp.ID AS Clin_Hosp, Prestador.nome " +
               "FROM ((Prestador LEFT OUTER JOIN " +
               "Clin_Hosp ON Prestador.ID = Clin_Hosp.ID) LEFT OUTER JOIN " +
               "Profissional ON Prestador.ID = Profissional.ID) order by Prestador.nome";
            DataTable dt = new DataTable();
            
            dt = Connect.seleciona(query).Tables[0];
            return dt;
        }

        /// <summary>
        /// Insere Prestador do Tipo Hospital/Clinica
        /// </summary>
        /// <param name="nome"></param>
        /// <param name="tipoLogradouro"></param>
        /// <param name="logradouro"></param>
        /// <param name="numero"></param>
        /// <param name="complemento"></param>
        /// <param name="codIBGEMun"></param>
        /// <param name="municipio"></param>
        /// <param name="codUF"></param>
        /// <param name="CEP"></param>
        /// <param name="CNES"></param>
        /// <param name="CNPJ"></param>       
        public static long inserePrestador(string nome, string tipoLogradouro, string logradouro, string numero, 
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string CNES, string CNPJ )
        {
            
            string query = "INSERT INTO Prestador(nome,tipoLogradouro,logradouro,numero,complemento,codIBGEMun,municipio,codUF,CEP) " +
                          " VALUES (@nome,@tipoLogradouro,@logradouro,@numero,@complemento,@codIBGEMun,@municipio,@codUF,@CEP)";
            string queryout = "SELECT MAX(ID) FROM Prestador";
            long ID = Convert.ToInt64(Connect.executa(query, queryout, new OleDbParameter("@nome", nome),
                new OleDbParameter("@tipoLogradouro", tipoLogradouro), new OleDbParameter("@logradouro", logradouro),
                new OleDbParameter("@numero", numero), new OleDbParameter("@complemento", complemento),
                new OleDbParameter("@codIBGEMun", codIBGEMun),
                new OleDbParameter("@municipio", municipio), new OleDbParameter("@codUF", codUF),
                new OleDbParameter("@CEP", CEP)));               
            insereHospClin(ID, CNES, CNPJ);
            return ID;
        }

        public static void insereHospClin(long ID, string CNES, string CNPJ)
        {
            string query = "INSERT INTO Clin_Hosp(ID,CNES,CNPJ)" + 
                " VALUES(@ID,@CNES,@CNPJ)";
            Connect.executa(query, "", new OleDbParameter("@ID", ID), new OleDbParameter("@CNES", CNES), new OleDbParameter("@CNPJ", CNPJ));
        }

        /// <summary>
        /// Insere Prestador do tipo Profissional
        /// </summary>
        /// <param name="nome"></param>
        /// <param name="tipoLogradouro"></param>
        /// <param name="logradouro"></param>
        /// <param name="numero"></param>
        /// <param name="complemento"></param>
        /// <param name="codIBGEMun"></param>
        /// <param name="municipio"></param>
        /// <param name="codUF"></param>
        /// <param name="CEP"></param>
        /// <param name="siglaConselho"></param>
        /// <param name="numeroConselho"></param>
        /// <param name="ufConselho"></param>
        /// <param name="CPF"></param>
        /// <param name="tipoCBOS"></param>
        /// <param name="judiciario"></param>
        public static long inserePrestador(string nome, string tipoLogradouro, string logradouro, string numero, 
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string siglaConselho, string numeroConselho, string ufConselho, string CPF, string CBOS, int judiciario)
        {
            
            string query = "INSERT INTO Prestador(nome,tipoLogradouro,logradouro,numero,complemento,codIBGEMun,municipio,codUF,CEP) " +
                          " VALUES (@nome,@tipoLogradouro,@logradouro,@numero,@complemento,@codIBGEMun,@municipio,@codUF,@CEP)";
            string queryout = "SELECT MAX(ID) FROM Prestador";
            long ID = Convert.ToInt64(Connect.executa(query, queryout, new OleDbParameter("@nome", nome),
                new OleDbParameter("@tipoLogradouro", tipoLogradouro), new OleDbParameter("@logradouro", logradouro),
                new OleDbParameter("@numero", numero), new OleDbParameter("@complemento", complemento),
                new OleDbParameter("@codIBGEMun", codIBGEMun),
                new OleDbParameter("@municipio", municipio), new OleDbParameter("@codUF", codUF),
                new OleDbParameter("@CEP", CEP)));                
            insereProfissional(ID, siglaConselho, numeroConselho, ufConselho, CPF ,CBOS , judiciario );
            return ID;
        }

        public static void insereProfissional(long ID, string siglaConselho, string numeroConselho, string ufConselho, string CPF , string CBOS , int judiciario)
        {
            string query = "INSERT INTO Profissional(ID,siglaConselho,numeroConselho,ufConselho,CPF,CBOS,judiciario)" + " VALUES (@ID,@siglaConselho,@numeroConselho,@ufConselho,@CPF,@CBOS,@judiciario)";
            Connect.executa(query, "", new OleDbParameter("@ID", ID), new OleDbParameter("@siglaConselho", siglaConselho), new OleDbParameter("@numeroConselho", numeroConselho),
               new OleDbParameter("@ufConselho", ufConselho), new OleDbParameter("@CPF", CPF), new OleDbParameter("@CBOS", CBOS),
                new OleDbParameter("@judiciario", judiciario));
        }

        public static DataSet buscaPrestador(long ID)
        {
            DataSet ds = new DataSet();
            string query = "SELECT pre.ID AS preID, pre.nome, pre.tipoLogradouro, pre.logradouro, pre.numero, pre.complemento, pre.codIBGEMun, "
                                + "pre.municipio, pre.codUF, pre.CEP, clin.ID, clin.CNES, clin.CNPJ, pro.siglaConselho, pro.numeroConselho, pro.ufConselho, pro.CPF, pro.CBOS , pro.judiciario "
                                + "FROM ((Prestador pre LEFT OUTER JOIN Profissional pro ON pre.ID = pro.ID) LEFT OUTER JOIN "
                                + "Clin_Hosp clin ON clin.ID = pre.ID) WHERE (pre.ID = @ID)";
            ds = Connect.seleciona(query, new OleDbParameter("@ID", ID));
            return ds;
        }

        public static void updatePrestador(Int64 ID, string nome, string tipoLogradouro, string logradouro, string numero,
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP, string CBOS , int judiciario)
        {
            string query = "UPDATE Prestador " +
                "SET nome='" + nome + "', tipoLogradouro='" + tipoLogradouro + "', logradouro='" + logradouro + "', numero='" + numero + "', " +
                    "complemento='" + complemento + "',codIBGEMun='" + codIBGEMun + "', municipio='" + municipio + "',codUF='" + codUF + "',CEP='" + CEP + "', CBOS='" + CBOS + "', judiciario='" + judiciario + "'" + 
                " WHERE ID =" + ID;
            Connect.executa(query, "");
        }

        /// <summary>
        /// Update Prestador do Tipo Hospital/Clinica
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="nome"></param>
        /// <param name="tipoLogradouro"></param>
        /// <param name="logradouro"></param>
        /// <param name="numero"></param>
        /// <param name="complemento"></param>
        /// <param name="codIBGEMun"></param>
        /// <param name="municipio"></param>
        /// <param name="codUF"></param>
        /// <param name="CEP"></param>
        /// <param name="CNES"></param>
        /// <param name="CNPJ"></param>        
        public static void updatePrestador(Int64 ID, string nome, string tipoLogradouro, string logradouro, string numero, 
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string CNES, string CNPJ)
        {
            string query = "UPDATE Prestador " +
                "SET nome='" + nome + "', tipoLogradouro='" + tipoLogradouro + "', logradouro='" + logradouro + "', numero='" + numero + "', " +
                    "complemento='" + complemento + "',codIBGEMun='" + codIBGEMun + "', municipio='" + municipio + "',codUF='" + codUF + "',CEP='" + CEP + "' " +
                " WHERE ID =" + ID;
            Connect.executa(query, "");
            
            query = "UPDATE Clin_Hosp " + " SET CNES= '" + CNES + "',CNPJ= '" + CNPJ + "' " +
                " WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        public static void trocaParaHospClin(Int64 ID, string nome, string tipoLogradouro, string logradouro, string numero,
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string CNES, string CNPJ )
        {
            updatePrestador(ID, nome, tipoLogradouro, logradouro, numero, complemento, codIBGEMun, municipio, codUF, CEP, CNES, CNPJ);
            string query = "DELETE FROM Profissional" + " WHERE ID = " + ID;
            Connect.executa(query, "");
            insereHospClin(ID, CNES, CNPJ );
        }

        /// <summary>
        /// Update Prestador do tipo Profissional
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="nome"></param>
        /// <param name="tipoLogradouro"></param>
        /// <param name="logradouro"></param>
        /// <param name="numero"></param>
        /// <param name="complemento"></param>
        /// <param name="codIBGEMun"></param>
        /// <param name="municipio"></param>
        /// <param name="codUF"></param>
        /// <param name="CEP"></param>
        /// <param name="siglaConselho"></param>
        /// <param name="numeroConselho"></param>
        /// <param name="ufConselho"></param>
        /// <param name="CPF"></param>
        /// <param name="tipoCBOS"></param>
        /// <param name="judiciario"></param>
        public static void updatePrestador(Int64 ID, string nome, string tipoLogradouro, string logradouro, string numero,
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string siglaConselho, string numeroConselho, string ufConselho, string CPF, string CBOS, int judiciario)
        {
            string query = "UPDATE Prestador " +
                "SET nome='" + nome + "', tipoLogradouro='" + tipoLogradouro + "', logradouro='" + logradouro + "', numero='" + numero + "', " +
                    "complemento='" + complemento + "',codIBGEMun='" + codIBGEMun + "', municipio='" + municipio + "',codUF='" + codUF + "',CEP='" + CEP + "'" +
                " WHERE ID =" + ID;
            Connect.executa(query, "");

            query = "UPDATE Profissional " + " SET siglaConselho= '" + siglaConselho + "', numeroConselho= '" + numeroConselho + "' ,ufConselho= '" + ufConselho + "', CPF= '" + CPF + "', CBOS= '" + CBOS + "', judiciario = " + judiciario + "" +
                " WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        public static void trocaParaProfissional(Int64 ID, string nome, string tipoLogradouro, string logradouro, string numero,
            string complemento, string codIBGEMun, string municipio, string codUF, string CEP,
            string siglaConselho, string numeroConselho, string ufConselho, string CPF, string CBOS , int judiciario)
        {
            updatePrestador(ID, nome, tipoLogradouro, logradouro, numero, complemento, codIBGEMun, municipio, codUF, CEP, CBOS, judiciario);
            string query = "DELETE FROM Clin_Hosp " + "WHERE ID = " + ID;
            Connect.executa(query, "");
            insereProfissional(ID, siglaConselho, numeroConselho, ufConselho, CPF, CBOS,judiciario);
        }

        public static void excluirPrestador(Int64 ID)
        {
            string query = "DELETE FROM Prestador WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        #region Login

        public static void cadastroLogin(Int64 ID, string Usuario, string Senha)
        {

            string query = "INSERT INTO Login(ID,Usuario,Senha)" + " VALUES (" + ID + ",'" + Usuario + "','" + Senha + "') ";
            Connect.executa(query, "");
        }

        public static Int64 existeLogin(string Usuario)
        {
            DataSet ds = new DataSet();
            Int64 ID = -1;
            string query = "SELECT ID  " + " FROM Login " + " WHERE Usuario = '" + Usuario + "'";
            ds = Connect.seleciona(query, new OleDbParameter("@Usuario", Usuario));
            if (ds.Tables[0].Rows.Count > 0)
                ID = Convert.ToInt64(ds.Tables[0].Rows[0].ItemArray[0].ToString());
            return ID;
        }

        public static DataTable verificaLogin(Int64? ID, string Usuario, string Senha)
        {
            string query = "";
            if (ID.HasValue)
                query = "SELECT Login.ID, Prestador.nome " +
                    "FROM Login INNER JOIN Prestador ON Login.ID = Prestador.ID " +
                    "WHERE (Prestador.ID = " + ID.Value + ") AND (Usuario = '" + Usuario + "') AND (Senha = '" + Senha + "')";
            else if (Senha != null)
                query = "SELECT Login.ID, Prestador.nome " +
                    "FROM Login INNER JOIN Prestador ON Login.ID = Prestador.ID " +
                    "WHERE (Usuario = '" + Usuario + "') AND (Senha = '" + Senha + "')";
            else
                query = "SELECT Login.ID " +
                    "FROM Login " +
                    "WHERE (Usuario = '" + Usuario + "')";

            DataTable dt = new DataTable();
            dt = Connect.seleciona(query).Tables[0];//, new OleDbParameter("@Usuario", Usuario), new OleDbParameter("@Senha", Senha)).Tables[0];
            return dt;
        }

        public static DataSet buscaUsuario(Int64 ID)
        {
            string query = "SELECT Usuario " + " FROM Login " + " WHERE ID = " + ID;
            return Connect.seleciona(query);
        }

        public static DataSet buscaLogin(Int64 ID)
        {
            string query = "SELECT Usuario, Senha " + " FROM Login " + " WHERE ID = " + ID;
            return Connect.seleciona(query);
        }

        public static void updateLogin(Int64 ID, string Usuario, string Senha)
        {
            string query = "UPDATE Login " + " SET Usuario = '" + Usuario + "' , Senha ='" + Senha + "'" + "WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        public static string verificaPrestador(Int64 ID)
        {
            DataSet ds = new DataSet();
            string query = " SELECT nome " + " FROM Prestador " + " WHERE ID = " + ID;
            ds = Connect.seleciona(query);
            string prestador = ds.Tables[0].Rows[0].ItemArray[0].ToString();
            return prestador;
        }

        #endregion

        #endregion

        #region Operadora

        public static DataTable selecionaOpCadastradas()
        {
            string query = "SELECT regANS, nome  " + " FROM Operadora order by nome";
            DataTable dt = new DataTable();
            
            dt = Connect.seleciona(query).Tables[0];
            return dt;
        }

        public static void incluirOperadora(string regANS, string nome, byte[] logo)
        {
            
            OleDbParameter paramLogo = new OleDbParameter("@logo", logo);
            paramLogo.DbType = DbType.Binary;
            string query = "INSERT INTO Operadora(regANS, nome, logo) " + "VALUES(@regANS, @nome, @logo)";
            Connect.executa(query, "", new OleDbParameter("@regANS", regANS), new OleDbParameter("@nome", nome), paramLogo);
        }

        /// <summary>
        /// seleciona os campos da operadora para alteração
        /// </summary>
        /// <param name="regANS"></param>
        /// <returns></returns>
        public static DataSet buscarOperadora(string regANS)
        {
            
            DataSet ds = new DataSet();
            string query = "SELECT regANS, nome, logo FROM Operadora" + " WHERE regANS= '" + regANS + "'";
            ds = Connect.seleciona(query);
            return ds;
        }

        public static void updateOperadora(string newregANS, string regANS, string nome, byte[] logo)
        {
            OleDbParameter param = new OleDbParameter("@logo", logo);
            param.DbType = DbType.Binary;
            
            string query = "UPDATE Operadora" + " SET regANS = '" + newregANS + "', nome='" + nome + "', logo = @logo" + " WHERE regANS ='" + regANS + "'";
            Connect.executa(query, "", param);
        }

        public static void excluirOperadora(string regANS)
        {
            
            string query = " DELETE FROM Operadora WHERE regANS = '" + @regANS + "'";
            Connect.executa(query, "");
        }

        #region URL

        public static void insertURL(string regANS, int tipoUrl, string url)
        {
            
            string query = "INSERT INTO OperadoraURLs(regANS, tipoURL_cod, url) " +
                "VALUES('" + regANS + "', " + tipoUrl + ", '" + url + "')";
            Connect.executa(query, "");
        }

        /// <summary>
        /// busca URLs da Operadora
        /// </summary>
        /// <param name="regANS">regANS da Operadora</param>
        /// <returns>Todas URLs dos WS da Operadora</returns>
        public static DataSet buscaURL(string regANS)
        {
            
            string query = "SELECT OperadoraURLs.tipoURL_cod, OperadoraURLs.url " +
                "FROM (Operadora INNER JOIN OperadoraURLs ON Operadora.regANS = OperadoraURLs.regANS) " +
                "WHERE OperadoraURLs.regANS= '" + regANS + "'";
            return Connect.seleciona(query);
        }

        /// <summary>
        /// busca URL da Operadora pelo Tipo escolhido
        /// </summary>
        /// <param name="regANS">regANS da Operadora</param>
        /// <param name="codTipo">código do Tipo</param>
        /// <returns>URL do WS escolhido</returns>
        public static DataSet buscaURL(string regANS, int codTipo)
        {
            
            string query = "SELECT OperadoraURLs.url " +
                "FROM (Operadora INNER JOIN OperadoraURLs ON Operadora.regANS = OperadoraURLs.regANS) " +
                "WHERE OperadoraURLs.regANS= '" + regANS + "' AND OperadoraURLs.tipoURL_cod = " + codTipo;
            return Connect.seleciona(query);
        }

        public static void deleteURL(string regANS)
        {
            
            string query = "DELETE FROM OperadoraURLs " + "WHERE regANS = '" + regANS + "'";
            Connect.executa(query, "");
        }

        #endregion

        #endregion

        #region Configurações

        public static DataSet buscaDadosPrestadorOperadora(long codPrestadorOrigem, string regANSDestino)
        {
            string query = "SELECT Trabalha.codPrestador, Trabalha.codnaOperadora, Clin_Hosp.ID AS IDClin_Hosp, Clin_Hosp.CNPJ, Clin_Hosp.CNES, Profissional.ID AS IDProfissional, " +
                         "Profissional.CPF, Profissional.siglaConselho, Profissional.numeroConselho, Profissional.ufConselho, Operadora.nome AS nomeOperadora, " +
                         "Operadora.regANS, Prestador.nome AS nomePrestador, Operadora.logo, Prestador.tipoLogradouro, Prestador.logradouro, Prestador.numero, " +
                         "Prestador.complemento, Prestador.codIBGEMun, Prestador.municipio, Prestador.CEP, Prestador.codUF, Profissional.CBOS " +
                "FROM ((((Trabalha INNER JOIN " +
                         "Operadora ON Trabalha.regANS = Operadora.regANS) INNER JOIN " +
                         "Prestador ON Trabalha.codPrestador = Prestador.ID) LEFT OUTER JOIN " +
                         "Profissional ON Trabalha.codPrestador = Profissional.ID) LEFT OUTER JOIN " +
                         "Clin_Hosp ON Trabalha.codPrestador = Clin_Hosp.ID) " +
                "WHERE (Trabalha.regANS = '" + regANSDestino + "') AND (Trabalha.codPrestador = " + codPrestadorOrigem + ")";
            DataSet ds = new DataSet();

            ds = Connect.seleciona(query);
            return ds;
        }

        public static DataTable buscaOperadoraFiliadaURL(Int64 codPrestador)
        {
            string query = "SELECT Operadora.nome, Trabalha.regANS, Trabalha.codnaOperadora, Trabalha.ID, " +
                            "cancela.url_cancela, lote.url_lote, demonstrativo.url_demonstrativo, procedimento.url_procedimento, " +
                            "protocolo.url_protocolo, autorizacao.url_autorizacao " +
                            "FROM (((((((Trabalha INNER JOIN Operadora ON Trabalha.regANS = Operadora.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_cancela " +
                                "FROM OperadoraURLs " +
                                "WHERE (tipoURL_cod = 1)) cancela ON cancela.regANS = Trabalha.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_lote " +
                                "FROM OperadoraURLs OperadoraURLs_1 " +
                                "WHERE (tipoURL_cod = 2)) lote ON lote.regANS = Trabalha.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_demonstrativo " +
                                "FROM OperadoraURLs OperadoraURLs_2 " +
                                "WHERE (tipoURL_cod = 3)) demonstrativo ON demonstrativo.regANS = Trabalha.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_procedimento " +
                                "FROM OperadoraURLs OperadoraURLs_1 " +
                                "WHERE (tipoURL_cod = 4)) procedimento ON procedimento.regANS = Trabalha.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_protocolo " +
                                "FROM OperadoraURLs OperadoraURLs_1 " +
                                "WHERE (tipoURL_cod = 5)) protocolo ON protocolo.regANS = Trabalha.regANS) " +
                            "LEFT OUTER JOIN (SELECT regANS, tipoURL_cod, url AS url_autorizacao " +
                                "FROM OperadoraURLs " +
                                "WHERE (tipoURL_cod = 6)) autorizacao ON autorizacao.regANS = Trabalha.regANS) " +
                            "WHERE (Trabalha.codPrestador = " + codPrestador.ToString() + ")";
            return Connect.seleciona(query).Tables[0];
        }

        /// <summary>
        /// Busca os dados do Prestador na Operadora Selecionada
        /// </summary>
        /// <param name="codPrestadorOrigem">código do Prestador</param>
        /// <param name="regANSDestino">regANS da Operadora</param>
        /// <returns>Trabalha.regANS, Trabalha.codPrestador, Trabalha.codnaOperadora, Profissional.CPF, Clin_Hosp.CNPJ, Clin_Hosp.CNES</returns>
        public static DataSet selecionaPrestadorOperadora(long codPrestadorOrigem, string regANSDestino)
        {
            string query = "SELECT Trabalha.regANS, Trabalha.codPrestador, Trabalha.codnaOperadora, Profissional.CPF, Clin_Hosp.CNPJ, Clin_Hosp.CNES " +
                "FROM ((Trabalha LEFT OUTER JOIN Profissional ON Trabalha.codPrestador = Profissional.ID) " +
                "LEFT OUTER JOIN Clin_Hosp ON Trabalha.codPrestador = Clin_Hosp.ID) " +
                "WHERE (Trabalha.regANS = '" + regANSDestino + "') AND (Trabalha.codPrestador = " + codPrestadorOrigem + ")";
            DataSet ds = new DataSet();
            
            ds = Connect.seleciona(query);
            return ds;
        }

        public static DataTable buscaOperadoraFiliada(long codPrestador)
        {
            string query = "SELECT Operadora.nome, Trabalha.regANS, Trabalha.codnaOperadora, Trabalha.ID " +
                            "FROM (Trabalha INNER JOIN Operadora ON Trabalha.regANS = Operadora.regANS) " +
                            "WHERE (Trabalha.codPrestador = " + codPrestador + ")";
            return Connect.seleciona(query).Tables[0];
        }

        public static DataTable buscaPrestadorFiliado(string regANS)
        {
            string query = "SELECT Operadora.nome, Trabalha.regANS, Trabalha.ID " +
                            "FROM (Trabalha INNER JOIN Operadora ON Trabalha.regANS = Operadora.regANS) " +
                            "WHERE (Trabalha.regANS = '" + regANS + "')";
            return Connect.seleciona(query).Tables[0];
        }

        public static DataTable buscaOpNaoFiliada(Int64 codPrestador)
        {        
            DataTable dt = new DataTable();
            DataSet dsop = new DataSet();
            DataSet dsopf = new DataSet();
            string query = "SELECT Operadora.nome, Operadora.regANS " +
                           "FROM Operadora";
            dsop = Connect.seleciona(query);
            query = "SELECT Trabalha.regANS " +
                    "FROM Trabalha " +
                    "WHERE Trabalha.codPrestador = @codPrestador";
            dsopf = Connect.seleciona(query, new OleDbParameter("@codPrestador", codPrestador));
            for (int i = 0; i < dsopf.Tables[0].Rows.Count; i++)
            {
                string regANS = dsopf.Tables[0].Rows[i].ItemArray[0].ToString();
                DataColumn[] dc = new DataColumn[1];
                dc[0] = dsop.Tables[0].Columns["regANS"];
                dsop.Tables[0].PrimaryKey = dc;

                int index = dsop.Tables[0].Rows.IndexOf(dsop.Tables[0].Rows.Find(regANS));
                dsop.Tables[0].Rows.RemoveAt(index);
            }
            dt = dsop.Tables[0];
            return dt;
        }

        public static DataTable buscaIntervaloLote(Int64 IDTrabalha)
        {            
            DataTable dtig = new DataTable();
            string query = "SELECT ID, De, Ate, Atual " +
                            "FROM IntervaloLote " +
                            "WHERE IDTrabalha = " + IDTrabalha;
            DataSet ds = Connect.seleciona(query);
            dtig = ds.Tables[0];
            return dtig;
        }

        public static void AddTrabalha(string regANS, Int64 codPrestador, string codNaOperadora)
        {
            
            string query = "INSERT INTO Trabalha(regANS, codPrestador, codnaOperadora) " +
                "VALUES (@regANS, @codPrestador, @codnaOperadora)";
            Connect.executa(query, "", new OleDbParameter("@regANS", regANS),
                new OleDbParameter("@codPrestador", codPrestador),
                new OleDbParameter("@codnaOperadora", codNaOperadora));
        }

        public static void AddIntervaloLote(Int64 IDTrabalha, Int64 de, Int64 ate, Int64 atual)
        {
            
            string query = "INSERT INTO IntervaloLote(IDTrabalha, De, Ate, Atual) " +
                "VALUES (" + IDTrabalha + "," + de + "," + ate + "," + atual + ")";
            Connect.executa(query, "");
        }

        public static void atualizaTrabalha(string regANS, Int64 codPrestador, string codNaOperadora)
        {
            
            string query = "UPDATE Trabalha " + " SET codnaOperadora ='" + codNaOperadora + "' " +
                           "WHERE regANS = '" + regANS + "' and codPrestador = " + codPrestador;
            Connect.executa(query, "");
        }

        public static void atualizaIntervaloLote(Int64 ID, Int64 de, Int64 ate, Int64 atual)
        {
            
            string query = "UPDATE IntervaloLote " + " SET De = " + de + ", Ate = " + ate + ", Atual = " + atual +
                           " WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        public static void removeOperadoraFiliada(string regANS, Int64 codPrestador)
        {
            
            string query = "DELETE FROM Trabalha " +
                           "WHERE regANS = '" + regANS + "' and codPrestador = " + codPrestador;
            Connect.executa(query, "");
        }

        public static void removeIntervaloLote(Int64 ID)
        {
            
            string query = "DELETE FROM IntervaloLote " +
                           "WHERE ID = " + ID;
            Connect.executa(query, "");
        }

        #endregion
    }
}
